define([
	'../libs/zepto',
	'../common/ajax',
	'../common/dialog',
	'../common/yingSoftPrg',
	'../common/yingSoftCookie',
	'../common/yingSoftPrg',
	'../common/storage',
	'../common/yingSoftSetTest'
],function(){
	var whole_height = window.innerHeight;
	var head_height = $('.common_header').height();
	$('.chapter_source').css('height',whole_height-head_height);
	var _gCpmArrNodes = []; //存储菜单显示的数据
	var _gCpmArrTitle = []; //存储用户选择过的标题
	var TestNum = 0; //当前章节总试题数，默认为0
	var _gCpmArrData = [];
	var _gIsVip = false;//用户是否已购买当前科目
	var clickNum = true;
	var width = $('.jindu').width();
	var arr = [];
	var m1 = G_Prg.getQueryString('value1');
	var n1= G_Prg.getQueryString('value2');
	var datiTitle = GetQueryString('title');
	$('.title').html(decodeURI(datiTitle));
	$('.dati').css('display','block');
	
	this.init = function(){
		$('.back').click(function () {
			_backClick(m1,n1);
		});
		var userID = G_Cookie.getUserID();
		var curMenu=_getChapterMenuData();
		if (userID){
			if(typeof(G_ChapterCache)!=='undefined'){
				_gCpmArrData = G_ChapterCache.getChapterInfo();
			}
			_gIsVip = G_Prg.checkVipApp();
		}
		var appEName = G_Cookie.getAppEName();
		var appENameArr = {
			'JC_EJJZS_JDGCGL':true,
			'JC_EJJZS_JSGCFG':true,
			'JC_EJJZS_JSSGGL':true
		}
		if(!appEName){
			G_Prg.alert('请先选择科目。',function(){
				location.href = '/switchMenu';
			});
			return;
		}
		
		_getTestNum(curMenu,_gCpmArrData);
		_gCpmArrTitle.push('章节列表');
		_gCpmArrNodes.push(curMenu); //在数组的尾部添加元素,增加节点
		var fromUrl=G_Prg.getQueryString('fromUrl');
		if(fromUrl==='answerExam'){ //何加selectPrice.html（未答跳转）
			var cptID=parseInt(G_Cookie.getCptID());
			if(cptID){
				_setcpmArrNodes(cptID, curMenu);
				_setTopChapterMenu(_gCpmArrNodes[_gCpmArrNodes.length - 1]);
			}else{
				G_Prg.throw('不能处理cptID：'+cptID);
			}
		}else{
			var data = curMenu[m1].Childs[n1].Childs;

			_gCpmArrNodes.push(curMenu[m1].Childs);
			_gCpmArrNodes.push(curMenu[m1].Childs[n1].Childs);
			_gCpmArrTitle.push(curMenu[m1].Name);
			_gCpmArrTitle.push(curMenu[m1].Childs[n1].Name);
		
			_setTopChapterMenu(data);
		}
	}
	init();
	/********************************************************************************
	 函数名：getTestNum
	 递归填充用户已答、错题数据等到章节列表的第一第二级
	 输入参数: data 章节json数据 userInfo 用户做题数据数组
	 返回值：returnData 当前章节用户做题数据
	 ********************************************************************************/
	function _getTestNum (data,userInfo){
		var testNum = 0;
		var doneNum = 0;
		var rightCount = 0;
		for(var i=0;i<data.length;i++){
			var curMenu = data[i];
			if(curMenu.NodeType === 'Chapter'){
				var cptInfo = _getUserInfo(curMenu.ID,userInfo);
				curMenu.DoneNum = cptInfo.testCount;
				curMenu.RightCount = cptInfo.RightCount;
			}else{
				var menuInfo = _getTestNum(curMenu.Childs,userInfo);
				curMenu.TestNum = menuInfo.TestNum;
				curMenu.DoneNum = menuInfo.DoneNum;
				curMenu.RightCount = menuInfo.RightCount;
			}
			testNum = testNum + curMenu.TestNum;
			doneNum = doneNum + curMenu.DoneNum;
			rightCount = rightCount + curMenu.RightCount;
		}
		if(doneNum>testNum){
			testNum= doneNum;
		}
		var returnData = {
			"TestNum" : testNum,
			"DoneNum" : doneNum,
			"RightCount" : rightCount
		};
		return returnData;
	}
	/********************************************************************************
	 函数名：getUserInfo
	 功能：获取某个章节用户的做题数据信息
	 输入参数: cptID 章节ID, data 用户做题数据数组
	 ********************************************************************************/
	function _getUserInfo(cptID,data){
		var userInfo = {
			"testCount" : 0,
			"RightCount" : 0
		};
		for(var i=0;i<data.length;i++){
			if(data[i].CptID === cptID){
				userInfo.testCount = data[i].testCount;
				userInfo.RightCount = data[i].RightCount;
				break;
			}
		}
		return userInfo;
	}
	/********************************************************************************
	函数名：setcpmArrNodes
	功能：设置全局数组数据
	输入参数: cptID 章节ID, curMenu 菜单数组
	返回值：无
	********************************************************************************/
	function _setcpmArrNodes(cptID, srcData) {
		for (var i = 0; i < srcData.length; i++) {
			srcName=srcData[i].Name;
			srcID = srcData[i].ID;
			sbjData = srcData[i].Childs;
			for (var j = 0; j < sbjData.length; j++) {
				sbjName=sbjData[j].Name;
				sbjID = sbjData[j].ID;
				cptData = sbjData[j].Childs;
				for (var k = 0; k < cptData.length; k++) {
					if (cptData[k].ID === cptID) {
						_gCpmArrNodes.push(sbjData);
						_gCpmArrNodes.push(cptData);
						_gCpmArrTitle.push(srcName);
						_gCpmArrTitle.push(sbjName);
						return;
					}
				}
			}
		}
	}
	/********************************************************************************
	函数名：getChapterMenuData
	功能：获取章节目录（若本地保存有章节最新数据，则从本地取数据，否则从接口取数据，然后将数据存在本地）
	输入参数: appEName 软件英文名
	返回值：updateTime 章节目录更新时间
	********************************************************************************/
	function _getChapterMenuData(){
		//var yatiResult = _ytTestTitle();
		var appEName = G_Cookie.getAppEName();
		if(!appEName) {
			G_Prg.throw('程序运行错误，chapterMenu.getChapterMenuData: appEName = "' + appEName + '",获取数据出现异常！');
		}
		var curMenu = '';
		if(G_Storage.checkLocalStorageSupport()) {
			var chapterMenu = G_Storage.getLocalStorageValue('chapterMenuData');
			if(chapterMenu && appEName === chapterMenu.AppEName) {
				var updateTime = getChapterMenuUpdateTime(appEName);
				if(updateTime === chapterMenu.UpdateTime) {
					curMenu = JSON.parse(chapterMenu.Data).Childs;
					var tempArr = [];
					for(var i = 0; i < curMenu.length; i++) {
						if(curMenu[i].Name != '考前押题' || yatiResult === 0) {
							tempArr.push(curMenu[i]);
						}
					}
					return tempArr;
				}
			}
		}
		if(window.localStorage) {
			var cacheKey = 'chapterCache_' + G_Cookie.getAppID() + '_' + G_Cookie.getUserID();
			localStorage.setItem(cacheKey, null);
		}
		var chapterMenuData = loadChapterMenu(appEName);
		var chapterMenuJson = {
			"Data": chapterMenuData.ChapterMenuJson,
			"AppEName": appEName,
			"UpdateTime": chapterMenuData.ChapterMenuUpdateTime
		};

		curMenu = JSON.parse(chapterMenuData.ChapterMenuJson).Childs;
		if(G_Storage.checkLocalStorageSupport()) {
			G_Storage.setLocalStorageValue('chapterMenuData', chapterMenuJson);
		}
		var tempArr = [];
		var yatiResult = _ytTestTitle();
		for(var i = 0; i < curMenu.length; i++) {
			if(curMenu[i].Name != '考前押题' || yatiResult === 0) {
				tempArr.push(curMenu[i]);
			}
		}
		return tempArr;
		//return curMenu;
	}
	/********************************************************************************
	函数名：loadChapterMenu
	功能：获得接口数据
	输入参数: 无
	返回值：chapterData根节点Childs数据
	********************************************************************************/
	function loadChapterMenu(appEName){
		var chapterData = '';
		G_AjaxApi_Record.get('/api/chapterMenu/getChapterMenu/' + appEName, false, function (json) {//
			var jsonData = JSON.parse(json);
			 if (jsonData.status === 200) {//获得有数据成功
				chapterData = jsonData.data;
			}else if(jsonData.status === 300){
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取章节目录',jsonData.status+':'+jsonData.msg);
			}
		});
		return chapterData;
	}
	/********************************************************************************
	函数名：getChapterMenuUpdateTime
	功能：获取章节目录更新时间
	输入参数: appEName 软件英文名
	返回值：updateTime 章节目录更新时间
	********************************************************************************/
	function getChapterMenuUpdateTime(appEName) {
	var updateTime = '';
	G_AjaxApi_Record.get('/api/chapterMenu/getChapterMenuUpdateTime/' + appEName, false, function(json) {
		var jsonData = JSON.parse(json);
		if(jsonData.status === 200) {
			updateTime = jsonData.data.ChapterMenuUpdateTime;
		} else if(jsonData.status === 300) {
			G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
			G_maiDian.setBugRecordInfos('程序错误', '章节练习——获取章节目录更新时间', jsonData.status + ':' + jsonData.msg);
		} else if(jsonData.status >= 400 && jsonData.status < 500) {
			G_maiDian.setBugRecordInfos('业务逻辑错误', '章节练习——获取章节目录更新时间', jsonData.status + ':' + jsonData.msg);
		} else {
			G_Prg.throw('程序运行错误！："无法处理"！');
			G_maiDian.setBugRecordInfos('其它程序错误', '章节练习——获取章节目录更新时间', jsonData.status + ':' + jsonData.msg);
		}
	});
	return updateTime;
}
	/********************************************************************************
	函数名：loadChapterHistoryCptid
	功能：获得接口数据
	输入参数: userID 用户ID
	返回值：cptidData批阅过得章节
	********************************************************************************/
	function _loadChapterHistoryCptid(userID) {
		var appEName = G_Cookie.getAppEName();
		var appID = G_Cookie.getAppID();
		var arrData = '';
		if (!appEName || !userID) {
			G_Prg.throw('程序运行错误，loadChapterMenu: appEName = "' + appEName + '","userID = "' + userID + '",获取数据出现异常！');
		}
		var url = '/api/chapterMenu/getCptIDNew?appID=' + appID + '&userID=' + userID + '&guid=' + G_Cookie.getGuid();

		G_AjaxApi_Record.get(url, false, function (json) {
			var jsonData = JSON.parse(json);
			if (jsonData.status === 200 || jsonData.status === 201) {//获得有数据成功
				arrData = jsonData.data;
			}else if (jsonData.status === 300) {
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取批阅过的章节',jsonData.status+':'+jsonData.msg);
			}
		});
		return arrData;
	}

	function _showLast(){
		G_Prg.$('chapterName').innerHTML = _gCpmArrTitle[_gCpmArrTitle.length - 1];
		G_Prg.$('Source').innerHTML = '';
		G_Prg.$('Source_last').innerHTML = '';
		var liTag = document.createElement('li');
		liTag.innerHTML = '押题内容将于考前一周内全部更新完毕<br>敬请期待！';
		liTag.className = 'InternalData';
		G_Prg.$('Source_last').appendChild(liTag);
	}
	/********************************************************************************
	函数名：setTopChapterMenu
	功能：显示章节目录数据
	输入参数: curMenu 菜单数组  格式如： "Childs": [{"Childs": null, "ID": "ZY_GWSJJN", "Name": "公卫执业医师实践技能"}， ]
	返回值：无
	********************************************************************************/
	function _setTopChapterMenu(curMenu) {
		if (!curMenu) {//判断数组长度
			return;
		}
		
		dati();

		function dati(){
			var k1 = 0;
			var k2 = 0;
			if(arr.length > 0){
				k1 = arr[0];
				k2 = arr[1];
			}else{
				k1 = m1;
				k2 = n1;
			}
			$('.content').html('');
			$('.dati').css('display','block');
			$('.dati').html('背题模式');
			$('.dati').attr('value',0);
			$('.dati').attr('m',k1);
			$('.dati').attr('n',k2);
			$('.source_list').css('display','none');
			//$('#loadingDiv').css('display','block');
			
			var str = '<ul class="subject_list"></ul>';
			$('.content').html(str);
			$('#loadingDiv').css('display','none');
			//myscroll.scrollToElement('.subject_list',1);
			for(var i = 0; i < curMenu.length; i++){
				var Count =0; //总题数
				var testCount = 0;//接收答题数
				var accuracy = '0';//接收正确率
				var yizuo = 0;
				Count = curMenu[i].TestNum;
				testCount = curMenu[i].DoneNum;
				if (testCount!==0) {
					if(testCount > curMenu[i].TestNum){	//如果已答试题数量大于试题总数，则强制设置已答试题数量等于试题总数
						testCount = curMenu[i].TestNum;
					}
					accuracy = parseInt((curMenu[i].RightCount / testCount * 100));
				}
				
				if(Count == 0){
					yizuo = 0;
				}else {
					yizuo = parseInt((testCount / Count * 100));
				}
				
				var m = '<li class="liTag" value="'+ curMenu[i].ID +'" title="'+ curMenu[i].Name +'"><div class="jindu"><canvas id="'+ curMenu[i].ID +'"></canvas>'+
					'</div><div class="titleShow">'+
					'<span class="chapter_title">'+ curMenu[i].Name +'</span>'+
					'<span class="lv">共'+ curMenu[i].TestNum +'题 已答题'+ testCount +'题 正确率'+ accuracy +'%</span></div>'+
					'<img src="/images/getInto.png" /></li>';
				$('.subject_list').append(m);
				var li_height = $('.liTag').eq(i).height();
				var height = $('.titleShow').eq(i).height();
				var jindu_height = $('.jindu').eq(i).height();
				$('.jindu').eq(i).css('margin-top','-2px');
				if(curMenu[i].Name >= 12){
					$('.titleShow').eq(i).css('margin-top',(li_height-height)/3-1 + 'px');
				}else{
					$('.titleShow').eq(i).css('margin-top',(li_height-height)/4-2 + 'px');
				}
				
				drawCircle({ id: $('.jindu').eq(i).find('canvas').attr('id'),angle:parseFloat(yizuo)/100 ,lineWidth: 6});	
				$('.liTag').click(function(){
					tiaozhuan($(this).index());
				});
			}
			G_Prg.popMsg('您当前处于做题模式');
			$('#popMsgDiv').css('margin-left','-90px');
			myscroll.refresh();
			
			$('.dati').click(function(){
				window.location.href = '/chapterBeiti?value1='+ $('.dati').attr('m') + '&value2='+ $('.dati').attr('n') + '&title='+ $('.title').html();
			});
			//_backClick();
		}
		
		function tiaozhuan(index){
			G_Cookie.setCptID($('.liTag').eq(index).attr('value'));
			window.location.href = '/answerExam?fromUrl=chapterThree&cptName='+$('.liTag').eq(index).attr('title')+'&m='+$('.dati').attr('m')+'&n=' +$('.dati').attr('n')+'&title=' + $('.title').html();
		}
		
		
		
		
	}
	
	// 截取网址上传递的参数	
	function GetQueryString(name) {  
	    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");  
	    var r = window.location.search.substr(1).match(reg);  //获取url中"?"符后的字符串并正则匹配
	    var context = "";  
	    if (r != null)  
	         context = r[2];  
	    reg = null;  
	    r = null;  
	    return context == null || context == "" || context == "undefined" ? "" : context;  
	}
	
	/********************************************************************************
	函数名：menuClick
	功能：点击当前节点，触发事件
	输入参数: arrIndex 数组下标
	返回值：无
	********************************************************************************/
	function _menuClick(arrIndex,notDoneNum) {
		//获取根节点数组长度
		var curMenu = _gCpmArrNodes[_gCpmArrNodes.length - 1];
		var sonMenu = curMenu[arrIndex].Childs; //子菜单
		var cptID = curMenu[arrIndex].ID; //菜单ID
		var cptName = curMenu[arrIndex].Name;
		//点击节点，判断是否有子节点
		if (sonMenu){
			clickNum = true;
			_gCpmArrTitle.push(cptName); //添加浏览记录
			_gCpmArrNodes.push(sonMenu); //在数组的尾部添加元素,增加节点
			if(cptID==='JC_EJJZS2'){
				_showLast();
			}else{
				_setTopChapterMenu(sonMenu); //生成菜单html
			}
		}else{
			clickNum = true;
			G_Cookie.setCptID(cptID);
//				var url='doExam.html?fromUrl=chapterMenu.html&cptName=' + encodeURI(cptName);
			//_pageJump(url);
			//return;
		}
	}

	/********************************************************************************
	函数名：backClick
	功能：点击返回图标，删当前数组节点，创建上一个数组节点html数据
	输入参数:无
	返回值：无
	********************************************************************************/
	function _backClick(m,n) {
		window.location.href = '/chapterExam?fromUrl=chapterThree&m='+ m + '&n=' + n;
	}
	/********************************************************************************
	函数名：insertAfter() 
	作  用：将一个新元素插入另一个元素后面 
	参  数：newElement - 新元素; targetElement - 目标元素 
	返回值： 无
	********************************************************************************/
	function _insertAfter(newElement, targetElement) {
		var parent = targetElement.parentNode;
		if (parent.lastChild == targetElement) {
			// 如果最后的节点是目标元素，则直接添加。因为默认是最后
			parent.appendChild(newElement);
		} else {
			parent.insertBefore(newElement, targetElement.nextSibling);
			//如果不是，则插入在目标元素的下一个兄弟节点 的前面。也就是目标元素的后面
		}
	}


	/********************************************************************************
	函数名：getNumber
	功能：获取当前章节的收藏、错题、笔记的数据
	输入参数:userID 用户ID,cptID 章节ID
	返回值：data 包含有收藏、错题、笔记数量的数据包
	创建信息：韦友爱（2014-07-24）
	修改记录：韦友爱（2014-07-25）删除输入参数appID 软件ID,userName 用户名
	审查人：无
	********************************************************************************/
	function _getNumber(userID, cptID) {
		var appID = G_Cookie.getAppID();
		if(!appID){
			G_Prg.throw('程序运行错误，chapterMenu._getNumber ,不能处理appID='+appID);
		}
		var userName = G_Cookie.getUserName();
		if(!userName){
		   G_Prg.throw('程序运行错误，chapterMenu._getNumber ,不能处理userName='+userName);
		}
		var data = '';
		var URL = '/api/analysis/getUserTestNumApi/' + appID + '/' + userID + '/' + cptID + '/' + userName;
		var success = function (json) {
			var jsonData = JSON.parse(json);
			if (jsonData.status === 200) {
				data = jsonData.data;
			}else if(jsonData.status === 201){
				data = '';
			}else if (jsonData.status === 300) {
				G_Prg.throw('程序运行错误！："' + jsonData.msg + '"！');
				//G_maiDian.setBugRecordInfos('程序错误','章节练习——获取当前章节的收藏、错题、笔记的数据',jsonData.status+':'+jsonData.msg);
			} else if(jsonData.status >= 400 && jsonData.status < 500){
				//G_maiDian.setBugRecordInfos('业务逻辑错误','章节练习——获取当前章节的收藏、错题、笔记的数据',jsonData.status+':'+jsonData.msg);
			} else{
				G_Prg.throw('程序运行错误！："无法处理"！');
				//G_maiDian.setBugRecordInfos('其它程序错误','章节练习——获取当前章节的收藏、错题、笔记的数据',jsonData.status+':'+jsonData.msg);
			}
		};
		G_AjaxApi.get(URL, false, success);
		return data;
	}
	/********************************************************************************
	功能：页面跳转
	输入参数: url 页面跳转的url
	返回值：无
	最后修改人（时间）：韦友爱（2015-01-19）
	修改内容：创建
	*******************************************************************************/
	function _pageJump(url){
		G_Prg.$('loadingDiv').style.display = 'block';
		G_Prg.$('Source_last').style.display = 'none';
		window.location.href = url;
	}
	
	 function getTestFromServer(cptID, appID, callback){
	 	var data = '';
        var URL = '/api/exam/getChapterTestJustTest';
        var params = {
        	appID:appID,
        	cptID:cptID,
        	userID:G_Cookie.getUserID(),
        	userName:G_Cookie.getUserName(),
        	guid:G_Cookie.getGuid()
        }
        var success = function (json) {
            var jsonObj = JSON.parse(json);
            if (jsonObj.status === 200) {	//200 获取数据成功
               data = jsonObj.data;
            } else if (jsonObj.status === 201) {	//201 没有数据；
                G_Prg.throw('程序运行错误，没有您要查找的试题数据！', callback);
            } else if (jsonObj.status === 300) {	//300 连接数据库失败
                //G_maiDian.setBugRecordInfos('程序错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
                G_Prg.throw('程序运行错误，TestData._getAllTestJSON,数据库获取数据异常');
            } else if (jsonObj.status >= 400 && jsonObj.status < 500) {
                //G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
            } else {
                //G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——获取章节练习试题', jsonObj.status + ':' + jsonObj.msg);
                G_Prg.throw('不能处理，TestData._getAllTestJSON:status=' + jsonObj.status);
            }
        };
        G_AjaxApi.post(URL, params, false, success);
        return data;
    }
	
	function addFav(curTest) {
//      if (_fromUrl === 'knowledgeList.html') {	//知识点试题不进行答题操作数据记录
//          return;
//      }
       
        var dbSuccess = function (json) {
            var jsonData = JSON.parse(json);
            if (jsonData.status === 200) {
               // setFav(1);	//收藏成功，将收藏状态修改到结构体数组中，供给上一题、下一题使用
            } else if (jsonData.status === 201) {
                G_Prg.throw('程序运行错误，不能处理，testData.addFav：status=' + jsonData.status + '添加收藏失败');
            } else {
                if (jsonData.status === 300) {
                   // G_maiDian.setBugRecordInfos('程序错误', '做题页面——添加收藏', jsonData.status + ':' + jsonData.msg);
                } else if (jsonData.status >= 400 && jsonData.status < 500) {
                   // G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——添加收藏', jsonData.status + ':' + jsonData.msg);
                } else {
                   // G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——添加收藏', jsonData.status + ':' + jsonData.msg);
                }
                G_Prg.throw('程序运行错误，不能处理，testData.addFav：status=' + jsonData.status);
            }
        }
        var childTableID = curTest.subTestID;
        var childTableName = curTest.testType;
        var allTestID = curTest.allTestID; //题目ID
        var styleID = curTest.styleID; //题型ID
        var cptID = curTest.cptID;
        var srcID = curTest.srcID;
        var sbjID = curTest.sbjID;
        var params = {
            appID: G_Cookie.getAppID(),
            userID: G_Cookie.getUserID(),
            cptID: cptID,
            allTestID: allTestID,
            childTableID: childTableID,
            childTableName: childTableName,
            srcID: srcID,
            sbjID: sbjID,
            styleID: styleID,
            userName: G_Cookie.getUserName(),
            guid: G_Cookie.getGuid()
        };
        G_AjaxApi.asyncPost('/api/exam/addUserFav', params, true, dbSuccess);
    }
	
	function removeFav(curTest) {
        var cptID = curTest.cptID;
        var allTestID = curTest.allTestID; //题目ID
        var childTableID = curTest.subTestID;
        //var _this = this;
        var _success = function (json) {
            var jsonData = JSON.parse(json);
            if (jsonData.status === 200) {
                //_this.setFav(0);	//取消收藏，将收藏状态修改到结构体数组中，供给上一题、下一题使用
            } else {
                if (jsonData.status === 300) {
                   // G_maiDian.setBugRecordInfos('程序错误', '做题页面——取消收藏', jsonData.status + ':' + jsonData.msg);
                } else if (jsonData.status >= 400 && jsonData.status < 500) {
                   // G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——取消收藏', jsonData.status + ':' + jsonData.msg);
                } else {
                   // G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——取消收藏', jsonData.status + ':' + jsonData.msg);
                }
                G_Prg.throw('程序运行错误，不能处理，testData.removeFav：status=' + jsonData.status);
            }
        }
        var params = {
            appID: G_Cookie.getAppID(),
            userID: G_Cookie.getUserID(),
            cptID: cptID,
            allTestID: allTestID,
            childTableID: childTableID,
            userName: G_Cookie.getUserName(),
            guid: G_Cookie.getGuid()
        };
        G_AjaxApi.asyncPost('/api/exam/deleteUserFav', params, true, _success);

    }
	
	// 获取题目信息
	function getTestFromCache(cptID){
		var data = '';
            var params = {
            	appID:appID = G_Cookie.getAppID(),
            	cptID:cptID,
            	userID:G_Cookie.getUserID(),
            	userName:G_Cookie.getUserName(),
            	guid:G_Cookie.getGuid()
            }
            var URL = '/api/exam/getChapterTestInfo';
            var success = function (json) {
                var jsonObj = JSON.parse(json);
                if (jsonObj.status === 200) {	//200 获取数据成功
                   data = jsonObj.data;
                } else if (jsonObj.status === 300) {	//300 连接数据库失败
                    //G_maiDian.setBugRecordInfos('程序错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                    G_Prg.throw('程序运行错误，TestData._getAllTestJSON,数据库获取数据异常');
                } else if (jsonObj.status >= 400 && jsonObj.status < 500) {
                    //G_maiDian.setBugRecordInfos('业务逻辑错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                } else {
                   // G_maiDian.setBugRecordInfos('其它程序错误', '做题页面——获取用户做题数据info包', jsonObj.status + ':' + jsonObj.msg);
                    G_Prg.throw('不能处理，TestData._getAllTestJSON:status=' + jsonObj.status);
                }
            };
            G_AjaxApi.post(URL, params, false, success);
			return data;
        }

	
	/********************************************************************************
	函数名：iOSreturn
	功能：苹果商店功能
	输入参数: 无
	返回值：无
	*******************************************************************************/
	function iOSreturn(){
	    var username=G_Cookie.getUserID();
	    var softname=G_Cookie.getAppEName();
	    var answer=username+"/"+softname;
	    return answer;
	}
	
	// 背题模式
	function display_none(){
		var arr = [];
		function getAttr(){
			for(var i = 0; i < $('.exam_list').length; i ++){
				arr[i] = $('.exam_list').eq(i).attr('data-display');
			}
		}
		getAttr();
		$(".exam_list").on("click", function() {
			var index = $(this).index();
			if (arr[index] == 'none') {
				$(this).find('.problme_title').siblings().css('display','block');
				$(this).attr('data-display', 'block');
				arr[index] = $(this).attr('data-display');
				//$(this).siblings().find('.problme_title').siblings().css("display", "none");
			}else{
				$(this).find('.problme_title').siblings().css('display','none');
				$(this).attr('data-display', 'none');
				arr[index] = $(this).attr('data-display');
				//$(this).siblings().find('.problme_title').siblings().css("display", "none");
			}
			myscroll.refresh();
		})	
	}
});

	
function drawCircle(_options){
    var options = _options || {};    //获取或定义options对象;
   // options.angle = options.angle || 1;    //定义默认角度1为360度(角度范围 0-1);
    options.color = options.color || '#59a7f4';    //定义默认颜色（包括字体和边框颜色）;
    options.lineWidth = options.lineWidth || 2;    //定义默认圆描边的宽度;
    options.lineCap = options.lineCap || 'square';    //定义描边的样式，默认为直角边，round 为圆角
 
    var oBoxOne = document.getElementById(options.id);
    if(window.innerWidth >= 600){
    	var sCenter = oBoxOne.offsetWidth / 2 - 14;
    }else{
    	var sCenter = oBoxOne.offsetWidth / 2 - 8;
    }
        //获取canvas元素的中心点;
    var ctx = oBoxOne.getContext('2d');
    var nBegin = Math.PI / 2;    //定义起始角度;
    var nEnd = Math.PI * 2;    //定义结束角度;
    
    var ntx = oBoxOne.getContext('2d');
     
    ntx.fillStyle = '#59a7f4';  
    ntx.arc(sCenter, sCenter, (sCenter - 18 ), -nBegin, nEnd, false);
    ntx.fill();
    // 填充文字
    var mtx = oBoxOne.getContext('2d');
    mtx.textAlign = 'center';    //定义字体居中;
	mtx.font = 'normal normal 30px Arial';    //定义字体加粗大小字体样式;
	mtx.fillStyle = '#fff';
	if(options.angle == 0 || options.angle == 1){
		mtx.fillText((options.angle * 100).toFixed(0) + '%', sCenter, sCenter+10);    //设置填充文字;
	}else{
		mtx.fillText((options.angle * 100).toFixed(0) + '%', sCenter, sCenter+10);    //设置填充文字;
	}
	
    ctx.lineWidth = options.lineWidth;
    ctx.beginPath();    //设置起始路径，这段绘制360度背景;
    ctx.strokeStyle = '#dfdfdf';
    ctx.arc(sCenter, sCenter, (sCenter - options.lineWidth), -nBegin, nEnd, false);
    ctx.stroke();
 
    function draw(current) {    //该函数实现角度绘制;
        ctx.beginPath();
        ctx.strokeStyle = options.color;
        ctx.arc(sCenter, sCenter, (sCenter - options.lineWidth), -nBegin, (nEnd * current) - nBegin, false);
        ctx.stroke();
    }
    draw(options.angle);
    
    
}



	
